//
//  XTUtility+File.h
//  XTUtilityKit
//
//  Created by Tong on 2017/5/19.
//  Copyright © 2017年 Tong. All rights reserved.
//

#import <Foundation/Foundation.h>

#import "XTUtility.h"

@interface XTUtility (File)

#pragma mark - 获取沙盒目录相关路径

/** 获取沙盒主目录路径 */
+ (NSString *)getHomeDirectory;

/** 获取沙盒中的 Documents 目录路径 */
+ (NSString *)getDocumentsDirectory;

/** 获取沙盒中的 Liabrary 目录路径 */
+ (NSString *)getLibraryDirectory;

/** 获取沙盒中的 Caches 目录路径 */
+ (NSString *)getCachesDirectory;

/** 获取沙盒中 Temporary 目录路径  */
+ (NSString *)getTemporaryDirectory;

#pragma mark - 获取文件相关属性

/** 获取文件目录路径 */
+ (NSString *)getFileDirectory:(NSString *)path;

/** 获取文件名字 */
+ (NSString *)getFileNameWithFilePath:(NSString *)path needSuffix:(BOOL)needSuffix;

/** 获取文件类型 */
+ (NSString *)getFileSuffixWithFilePath:(NSString *)path;

/** 获取文件属性 */
+ (NSDictionary *)getFileAttributesOfItemAtPath:(NSString *)path;

/** 获取文件属性,返回错误信息 */
+ (NSDictionary *)getFileAttributesOfItemAtPath:(NSString *)path error:(NSError **)error;

/** 获取文件某一属性 */
+ (id)getOneFileAttributesOfItemAtPath:(NSString *)path byFileAttributeType:(NSFileAttributeType)fileAttributeType;

/** 获取文件某一属性,返回错误信息 */
+ (id)getOneFileAttributesOfItemAtPath:(NSString *)path byFileAttributeType:(NSFileAttributeType)fileAttributeType error:(NSError **)error;

#pragma mark - 检查文件相关信息

/** 判断文件路径是否存在 */
+ (BOOL)checkFileIsExistsAtPath:(NSString *)path;

/** 判断文件是否可以执行 */
+ (BOOL)checkFileIsExecutableItemAtPath:(NSString *)path;

/** 判断文件是否可读 */
+ (BOOL)checkFileIsReadableItemAtPath:(NSString *)path;

/** 判断文件是否可写 */
+ (BOOL)checkFileIsWritableItemAtPath:(NSString *)path;

#pragma mark - 创建文件(夹)

/** 创建目录 */
+ (BOOL)createDirectoryAtPath:(NSString *)path;

/** 创建目录,返回错误信息 */
+ (BOOL)createDirectoryAtPath:(NSString *)path error:(NSError **)error;

/** 创建文件 */
+ (BOOL)createFileAtPath:(NSString *)path;

/** 创建文件,返回错误信息 */
+ (BOOL)createFileAtPath:(NSString *)path error:(NSError **)error;


#pragma mark - 删除文件(夹)

/** 删除文件(夹) */
+ (BOOL)removeFileAtPath:(NSString *)path;

/** 删除文件(夹) */
+ (BOOL)removeFileAtPath:(NSString *)path error:(NSError **)error;

#pragma mark - 复制文件(夹)

/** 复制文件(夹) */
+ (BOOL)copyFileAtPath:(NSString *)path toPath:(NSString *)toPath;

/** 复制文件(夹),返回错误信息 */
+ (BOOL)copyFileAtPath:(NSString *)path toPath:(NSString *)toPath error:(NSError **)error;

#pragma mark - 移动文件(夹)

/** 移动文件(夹) */
+ (BOOL)moveFileAtPath:(NSString *)path toPath:(NSString *)toPath;

/** 移动文件(夹),返回错误信息 */
+ (BOOL)moveFileAtPath:(NSString *)path toPath:(NSString *)toPath error:(NSError **)error;


@end
